const fs = require("fs");
const {
    title
} = require("process");
const puppeteer = require('puppeteer')

// 获取热门电视剧
// const url = `https://movie.douban.com/tv/#!type=tv&tag=%E7%83%AD%E9%97%A8&
//     sort=rank&page_limit=20&page_start=0`

// const sleep = time => new Promise(resolve => {
//     setTimeout(resolve, time)
// })

// ;
// (async () => {
//     console.log('开始数据的爬取')
//     const browser = await puppeteer.launch({
//         args: ['--no-sandbox'],
//         dumpio: false,
//     })

//     const page = await browser.newPage()
//     await page.goto(url, {
//         waitUntil: 'networkidle2'
//     })

//     await sleep(3000)

//     await page.waitForSelector('.more')

//     for (let index = 0; index < 30; index++) {
//         await sleep(3000)
//         await page.click('.more')
//     }

//     const result = await page.evaluate(() => {
//         var $ = window.$
//         var items = $('.list-wp a')
//         var links = [];
//         if (items.length >= 1) {
//             items.each((index, item) => {
//                 let it = $(item)
//                 let doubanId = it.find('div').data('id')
//                 // let title = it.find('p').text().trim()
//                 let title = it.find('p').text().trim().replace(/[\r\n]/g, "").replace(/\ +/g, "")

//                 var reg = /[\u4e00-\u9fa5]+/g;
//                 title = title.match(reg)
//                 // console.log("title",title);
//                 let rate = Number(it.find('strong').text())
//                 let poster = it.find('img').attr('src')
//                 if (title !== null) {
//                     links.push({
//                         doubanId,
//                         "title": title[0],
//                         rate,
//                         poster
//                     })
//                 }
//             })
//         }
//         return links
//     })

//     browser.close()
//     // console.log(result)
//     fs.appendFile('data/Hot.json', JSON.stringify(result), (error) => {
//         if (error) {
//             console.log(error)
//         } else {
//             console.log('成功写入文件')
//         }
//     })
// })()
// 获取美剧
// const url = `https://movie.douban.com/tv/#!type=tv&tag=%E7%BE%8E%E5%89%A7&sort=rank&page_limit=20&page_start=0`

// const sleep = time => new Promise(resolve => {
//     setTimeout(resolve, time)
// })

// ;
// (async () => {
//     console.log('开始数据的爬取')
//     const browser = await puppeteer.launch({
//         args: ['--no-sandbox'],
//         dumpio: false,
//     })

//     const page = await browser.newPage()
//     await page.goto(url, {
//         waitUntil: 'networkidle2'
//     })

//     await sleep(3000)

//     await page.waitForSelector('.more')

//     for (let index = 0; index < 20; index++) {
//         await sleep(3000)
//         await page.click('.more')
//     }

//     const result = await page.evaluate(() => {
//         var $ = window.$
//         var items = $('.list-wp a')
//         var links = [];
//         if (items.length >= 1) {
//             items.each((index, item) => {
//                 let it = $(item)
//                 let doubanId = it.find('div').data('id')
//                 // let title = it.find('p').text().trim()
//                 let title = it.find('p').text().trim().replace(/[\r\n]/g, "").replace(/\ +/g, "")

//                 var reg = /[\u4e00-\u9fa5]+/g;
//                 title = title.match(reg)
//                 // console.log("title",title);
//                 let rate = Number(it.find('strong').text())
//                 let poster = it.find('img').attr('src')
//                 if (title !== null) {
//                     links.push({
//                         doubanId,
//                         "title": title[0],
//                         rate,
//                         poster
//                     })
//                 }
//             })
//         }
//         return links
//     })

//     browser.close()
//     // console.log(result)
//     fs.appendFile('data/American.json', JSON.stringify(result), (error) => {
//         if (error) {
//             console.log(error)
//         } else {
//             console.log('成功写入文件')
//         }
//     })
// })()
// 英国剧Britain
// const url = `https://movie.douban.com/tv/#!type=tv&tag=%E8%8B%B1%E5%89%A7&sort=rank&page_limit=20&page_start=0`

// const sleep = time => new Promise(resolve => {
//     setTimeout(resolve, time)
// })

// ;
// (async () => {
//     console.log('开始数据的爬取')
//     const browser = await puppeteer.launch({
//         args: ['--no-sandbox'],
//         dumpio: false,
//     })

//     const page = await browser.newPage()
//     await page.goto(url, {
//         waitUntil: 'networkidle2'
//     })

//     await sleep(3000)

//     await page.waitForSelector('.more')

//     for (let index = 0; index < 20; index++) {
//         await sleep(3000)
//         await page.click('.more')
//     }

//     const result = await page.evaluate(() => {
//         var $ = window.$
//         var items = $('.list-wp a')
//         var links = [];
//         if (items.length >= 1) {
//             items.each((index, item) => {
//                 let it = $(item)
//                 let doubanId = it.find('div').data('id')
//                 // let title = it.find('p').text().trim()
//                 let title = it.find('p').text().trim().replace(/[\r\n]/g, "").replace(/\ +/g, "")

//                 var reg = /[\u4e00-\u9fa5]+/g;
//                 title = title.match(reg)
//                 // console.log("title",title);
//                 let rate = Number(it.find('strong').text())
//                 let poster = it.find('img').attr('src')
//                 if (title !== null) {
//                     links.push({
//                         doubanId,
//                         "title": title[0],
//                         rate,
//                         poster
//                     })
//                 }
//             })
//         }
//         return links
//     })

//     browser.close()
//     // console.log(result)
//     fs.appendFile('data/Britain.json', JSON.stringify(result), (error) => {
//         if (error) {
//             console.log(error)
//         } else {
//             console.log('成功写入文件')
//         }
//     })
// })()

// 获取韩剧SouthKorea
// function getData(Url,name){
//     const url = Url

//     const sleep = time => new Promise(resolve => {
//         setTimeout(resolve, time)
//     })

//     ;
//     (async () => {
//         console.log('开始数据的爬取')
//         const browser = await puppeteer.launch({
//             args: ['--no-sandbox'],
//             dumpio: false,
//         })

//         const page = await browser.newPage()
//         await page.goto(url, {
//             waitUntil: 'networkidle2'
//         })

//         await sleep(3000)

//         await page.waitForSelector('.more')

//         for (let index = 0; index < 20; index++) {
//             await sleep(3000)
//             await page.click('.more')
//         }

//         const result = await page.evaluate(() => {
//             var $ = window.$
//             var items = $('.list-wp a')
//             var links = [];
//             if (items.length >= 1) {
//                 items.each((index, item) => {
//                     let it = $(item)
//                     let doubanId = it.find('div').data('id')
//                     // let title = it.find('p').text().trim()
//                     let title = it.find('p').text().trim().replace(/[\r\n]/g, "").replace(/\ +/g, "")

//                     var reg = /[\u4e00-\u9fa5]+/g;
//                     title = title.match(reg)
//                     // console.log("title",title);
//                     let rate = Number(it.find('strong').text())
//                     let poster = it.find('img').attr('src')
//                     if (title !== null) {
//                         links.push({
//                             doubanId,
//                             "title": title[0],
//                             rate,
//                             poster
//                         })
//                     }
//                 })
//             }
//             return links
//         })

//         browser.close()
//         // console.log(result)
//         fs.appendFile(`data/${name}.json`, JSON.stringify(result), (error) => {
//             if (error) {
//                 console.log(error)
//             } else {
//                 console.log('成功写入文件')
//             }
//         })
//     })()
// }


// 获取日剧Japan https://movie.douban.com/tv/#!type=tv&tag=%E6%97%A5%E5%89%A7&sort=rank&page_limit=20&page_start=0
// getData("https://movie.douban.com/tv/#!type=tv&tag=%E6%97%A5%E5%89%A7&sort=rank&page_limit=20&page_start=0",'Japan')

// 获取国产China https://movie.douban.com/tv/#!type=tv&tag=%E5%9B%BD%E4%BA%A7%E5%89%A7&sort=rank&page_limit=20&page_start=0
// getData('https://movie.douban.com/tv/#!type=tv&tag=%E5%9B%BD%E4%BA%A7%E5%89%A7&sort=rank&page_limit=20&page_start=0','China')

// 获取港剧HongKong https://movie.douban.com/tv/#!type=tv&tag=%E6%B8%AF%E5%89%A7&sort=rank&page_limit=20&page_start=0
// getData('https://movie.douban.com/tv/#!type=tv&tag=%E6%B8%AF%E5%89%A7&sort=rank&page_limit=20&page_start=0','HongKong')

// 获取日本动画JapaneseAnimation https://movie.douban.com/tv/#!type=tv&tag=%E6%97%A5%E6%9C%AC%E5%8A%A8%E7%94%BB&sort=rank&page_limit=20&page_start=0
// getData('https://movie.douban.com/tv/#!type=tv&tag=%E6%97%A5%E6%9C%AC%E5%8A%A8%E7%94%BB&sort=rank&page_limit=20&page_start=0','JapaneseAnimation')

// 获取综艺variety https://movie.douban.com/tv/#!type=tv&tag=%E7%BB%BC%E8%89%BA&sort=rank&page_limit=20&page_start=0
// getData('https://movie.douban.com/tv/#!type=tv&tag=%E7%BB%BC%E8%89%BA&sort=rank&page_limit=20&page_start=0','variety')

// 获取记录片documentary https://movie.douban.com/tv/#!type=tv&tag=%E7%BA%AA%E5%BD%95%E7%89%87&sort=rank&page_limit=20&page_start=0
// getData('https://movie.douban.com/tv/#!type=tv&tag=%E7%BA%AA%E5%BD%95%E7%89%87&sort=rank&page_limit=20&page_start=0','documentary')




// const cheerio = require("cheerio")
// const axios = require("axios")

// axios({
//     url: "https://movie.douban.com/tv/#!type=tv&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0",
// })
// .then(
//     res=>{
//         // console.log(res.data)
//         spiderIt(res.data)
//     }
// )
// .catch(err=>console.log("err=",err))

// /* spider蜘蛛（一种天天在web上闲逛采集露水与小虫的贪婪生物）=> 爬虫 */
// const dataList = []
// function spiderIt(html){
//     const $ = cheerio.load(html)
//     $(".ob").each(
//         (index,el)=>{
//             const data = {}
//             // console.log($(el).find("h2").text());
//             data.name = $(el).find("dd").text().trim()
//             data.poster = $(el).find('dt img').attr('src')
//             // data.positions = []

//             // $(el).find("h3").each(
//             //     (i,e)=>{
//             //         data.positions.push($(e).text().trim())
//             //     }
//             // )

//             dataList.push(data)
//         }
//     )

//     console.log("爬取完毕",dataList);
// }
// 获取小组
// let array = ['https://movie.douban.com/tv/#!type=tv&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0',
//     'https://movie.douban.com/tv/#!type=tv&tag=%E7%BE%8E%E5%89%A7&sort=rank&page_limit=20&page_start=0',
//     'https://movie.douban.com/tv/#!type=tv&tag=%E8%8B%B1%E5%89%A7&sort=rank&page_limit=20&page_start=0',
//     'https://movie.douban.com/tv/#!type=tv&tag=%E9%9F%A9%E5%89%A7&sort=recommend&page_limit=20&page_start=0',
//     'https://movie.douban.com/tv/#!type=tv&tag=%E6%97%A5%E5%89%A7&sort=rank&page_limit=20&page_start=0',
//     'https://movie.douban.com/tv/#!type=tv&tag=%E5%9B%BD%E4%BA%A7%E5%89%A7&sort=rank&page_limit=20&page_start=0',
//     'https://movie.douban.com/tv/#!type=tv&tag=%E6%B8%AF%E5%89%A7&sort=rank&page_limit=20&page_start=0',
//     'https://movie.douban.com/tv/#!type=tv&tag=%E6%97%A5%E6%9C%AC%E5%8A%A8%E7%94%BB&sort=rank&page_limit=20&page_start=0',

// ]


// array.forEach(Url=> {

//     const url = Url

//     const sleep = time => new Promise(resolve => {
//         setTimeout(resolve, time)
//     })

//     ;
//     (async () => {
//         console.log('开始数据的爬取')
//         const browser = await puppeteer.launch({
//             args: ['--no-sandbox'],
//             dumpio: false,
//         })

//         const page = await browser.newPage()
//         await page.goto(url, {
//             waitUntil: 'networkidle2'
//         })

//         await sleep(3000)

//         // await page.waitForSelector('.more')

//         // for (let index = 0; index < 20; index++) {
//         //     await sleep(3000)
//         //     await page.click('.more')
//         // }

//         const result = await page.evaluate(() => {
//             var $ = window.$
//             var el = $('.aside')
//             var items = $('.aside .ob')
//             var links = [];
//             let title = el.find('h2').text().trim()
//             if (items.length >= 1) {
//                 items.each((index, item) => {
//                     let it = $(item)
//                     let img_url = it.find('img').attr('src')

//                     let teamName = it.find('a').text().trim()
//                     let players = Number(it.find('span').text().trim().replace(/[\(\)]/g, ""))
//                     links.push({
//                         img_url,
//                         teamName,
//                         players
//                     })
//                     // let doubanId = it.find('div').data('id')
//                     // // let title = it.find('p').text().trim()
//                     // let title = it.find('p').text().trim().replace(/[\r\n]/g, "").replace(/\ +/g, "")

//                     // var reg = /[\u4e00-\u9fa5]+/g;
//                     // title = title.match(reg)
//                     // // console.log("title",title);
//                     // let rate = Number(it.find('strong').text())
//                     // let poster = it.find('img').attr('src')

//                     // if (title !== null) {
//                     //     links.push({
//                     //         doubanId,
//                     //         "title": title[0],
//                     //         rate,
//                     //         poster
//                     //     })
//                     // }
//                 })
//             }
//             let data = {
//                 'title': title,
//                 'list': links
//             }

//             return data
//         })

//         browser.close()
//         // console.log(result)
//         fs.appendFile(`data/team.json`, JSON.stringify(result)+',', (error) => {
//             if (error) {
//                 console.log(error)
//             } else {
//                 console.log('成功写入文件')
//             }
//         })
//     })()
// })

// 获取电视分类classification
// const url = 'https://movie.douban.com/tv/#!type=tv&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0'

// const sleep = time => new Promise(resolve => {
//     setTimeout(resolve, time)
// })

// ;
// (async () => {
//     console.log('开始数据的爬取')
//     const browser = await puppeteer.launch({
//         args: ['--no-sandbox'],
//         dumpio: false,
//     })

//     const page = await browser.newPage()
//     await page.goto(url, {
//         waitUntil: 'networkidle2'
//     })

//     await sleep(3000)

//     // await page.waitForSelector('.more')

//     // for (let index = 0; index < 20; index++) {
//     //     await sleep(3000)
//     //     await page.click('.more')
//     // }

//     const result = await page.evaluate(() => {
//         var $ = window.$

//         var items = $('.tags label')
//         var links = [];

//         if (items.length >= 1) {
//             items.each((index, item) => {
//                 let it = $(item)
//                 // let img_url = it.find('img').attr('src')

//                 let Name = it.find('input').attr('value')
//                 // let players = Number(it.find('span').text().trim().replace(/[\(\)]/g, ""))
//                 links.push(

//                     Name

//                 )

//             })
//         }
//         // let data = {
//         //     'title': title,
//         //     'list': links
//         // }

//         return links
//     })

//     browser.close()
//     // console.log(result)
//     fs.appendFile(`data/classification.json`, JSON.stringify(result) + ',', (error) => {
//         if (error) {
//             console.log(error)
//         } else {
//             console.log('成功写入文件')
//         }
//     })
// })()
// 获取详情页
let array = ['https://movie.douban.com/tv/#!type=tv&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0',
    //     'https://movie.douban.com/tv/#!type=tv&tag=%E7%BE%8E%E5%89%A7&sort=rank&page_limit=20&page_start=0',
    //     'https://movie.douban.com/tv/#!type=tv&tag=%E8%8B%B1%E5%89%A7&sort=rank&page_limit=20&page_start=0',
    //     'https://movie.douban.com/tv/#!type=tv&tag=%E9%9F%A9%E5%89%A7&sort=recommend&page_limit=20&page_start=0',
    //     'https://movie.douban.com/tv/#!type=tv&tag=%E6%97%A5%E5%89%A7&sort=rank&page_limit=20&page_start=0',
    //     'https://movie.douban.com/tv/#!type=tv&tag=%E5%9B%BD%E4%BA%A7%E5%89%A7&sort=rank&page_limit=20&page_start=0',
    //     'https://movie.douban.com/tv/#!type=tv&tag=%E6%B8%AF%E5%89%A7&sort=rank&page_limit=20&page_start=0',
    //     'https://movie.douban.com/tv/#!type=tv&tag=%E6%97%A5%E6%9C%AC%E5%8A%A8%E7%94%BB&sort=rank&page_limit=20&page_start=0',

]
array.forEach(Url => {

    const url = Url

    const sleep = time => new Promise(resolve => {
        setTimeout(resolve, time)
    })

    ;
    (async () => {
        console.log('开始数据的爬取')
        const browser = await puppeteer.launch({
            args: ['--no-sandbox'],
            dumpio: false,
        })

        const page = await browser.newPage()
        await page.goto(url, {
            waitUntil: 'networkidle2'
        })

        await sleep(3000)

        // await page.waitForSelector('.more')

        // for (let index = 0; index < 20; index++) {
        //     await sleep(3000)
        //     await page.click('.more')
        // }

        const result = await page.evaluate(() => {
            var links = [];
            var $ = window.$
            let doubanId
            var items = $('.list-wp a')

            // let title = el.find('h2').text().trim()
            if (items.length >= 1) {
                items.each((index, item) => {
                    // var el = $('.list-wp')
                    let it = $(item)
                    // let img_url = it.find('img').attr('src')
                    doubanId = it.find('div').data('id')
                    if (doubanId) {
                        links.push(doubanId)
                    }
                })
            }
            // let data = {
            //     'title': title,
            //     'list': links
            // }

            return links

        })

        browser.close()
        // console.log(result);
        // getDetails(result)

    })()
})


getDetails(34927946)
function getDetails(doubanId) {
    // for (var key in doubanId) {
    var index = 1

    // setInterval(function () {

    const url1 = `https://movie.douban.com/subject/${doubanId}/?tag=%E7%83%AD%E9%97%A8&from=gaia_video`;
    (async () => {
        console.log('开始数据的爬取')
        const browser = await puppeteer.launch({
            args: ['--no-sandbox'],
            dumpio: false,
        })
        const page = await browser.newPage()
        await page.goto(url1, {
            waitUntil: 'networkidle2'
        })

        const data = await page.evaluate(() => {
            var $ = window.$
            var items = $('#content')
            var details = {};
            if (items.length >= 1) {
                items.each((index, item) => {
                    let it = $(item)
                    let Directorlist = {}
                    let DirectorName = []
                    let value = []
                    let WebsiteUrl
                    let key
                    let TvName = it.find('h1 span').text().trim()
                    let img_url = it.find('.nbgnbg img').attr('src')

                    
                    it.find('#info span').each((idx, ite) => {
                        let pre = $(ite)
                        let idxData=[]
                        
                        if (pre.find('.p1')) {
                            idxData.push(pre.find('.p1'))
                             key= pre.find('.p1').text()
                            DirectorName.push(pre.find('.attrs a').text())
                            Directorlist = {
                                key,
                                idxData,
                                DirectorName
                            }
                            // idx=idx
                        } else {
                            key = it.find('#info .p1').text()
                            keyvalue = it.find('#info a').attr('href')
                            value.push(key)
                        }
                    })


                    if (TvName) {
                        details = {
                            
                            TvName,
                            img_url,
                            Directorlist,
                            value,
                            WebsiteUrl
                        }
                        // details.push(TvName)
                    }
                })
            }
            // browser.setMaxListeners(0)
            return details
        })
        browser.close()
        console.log(data)
        fs.appendFile(`data/details.json`, JSON.stringify(data) + ',', (error) => {
            if (error) {
                console.log(error)
            } else {
                console.log('成功写入文件')
            }
        })
    })()
    index += 1
    // }, 3000)

    // continue
    // }
}